package com.broada.apm.indicator.api;

import java.util.List;

import com.broada.apm.model.Dimension.Area;
import com.broada.apm.model.Dimension.Browser;
import com.broada.apm.model.Dimension.Device;
import com.broada.apm.model.Dimension.Error;
import com.broada.apm.model.Dimension.OS;

public interface DimensionService {

	/**
	 * 添加返回码信息
	 * @param error
	 */
	public void addError(Error error);

	/**
	 * 修改返回码信息
	 * @param error
	 */
	public void updateError(Error error);

	/**
	 * 根据协议类型查询返回码信息
	 * @param protocol
	 * @return
	 */
	public List<Error> getErrorByL7Protocol(int protocol);

	/**
	 * 删除返回码信息
	 * @param error
	 */
	public void deleteError(Error error);

	/**
	 * 查询所有浏览器类型
	 * @return
	 */
	public List<Browser> getAllBrowsers();

	/**
	 * 查询所有设备类型
	 * @return
	 */
	public List<Device> getAllDevices();

	/**
	 * 查询所有操作系统类型
	 * @return
	 */
	public List<OS> getAllOSs();

	/**
	 * 查询所有地域
	 * @return
	 */
	public List<Area> getAllAreas();
	
	/**
	 * 查询所有的国家
	 * @return
	 */
	public List<Area> getRootArea();

	/**
	 * 根据国家查询所有的省份
	 * @param root
	 * @return
	 */
	public List<Area> getProvinceArea(String root);

	/**
	 * 根据省份查询所有的城市
	 * @param province
	 * @return
	 */
	public List<Area> getCityArea(String province);

	/**
	 * 根据城市查询所有的县市区
	 * @param district
	 * @return
	 */
	public List<Area> getDistrictArea(String district);

	/**
	 * 根据ID查询所有的错误码
	 * @param id
	 * @return
	 */
	public Error getErrorById(String id);

}
